package com.by.cloud.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.by.cloud.common.PageResult;
import com.by.cloud.model.dto.picture.PicturePageRequest;
import com.by.cloud.model.dto.picture.PictureReviewRequest;
import com.by.cloud.model.dto.picture.PictureUpdateDto;
import com.by.cloud.model.dto.picture.PictureUploadRequest;
import com.by.cloud.model.entity.Picture;
import com.by.cloud.model.vo.picture.PictureCategoryTagVo;
import com.by.cloud.model.vo.picture.PictureVo;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author lzh
 */
public interface PictureService extends IService<Picture> {
    /**
     * 上传图片文件
     *
     * @param multipartFile 上传的文件
     * @param uploadRequest 上传文件请求包装类
     * @return 返回图片vo对象
     */
    PictureVo uploadPicture(MultipartFile multipartFile, PictureUploadRequest uploadRequest);

    /**
     * 根据ID获取图片脱敏对象
     *
     * @param picId 图片ID
     * @return 图片脱敏对象
     */
    PictureVo getPictureVoById(Long picId);

    /**
     * 更新图片信息
     *
     * @param updateDto 请求参数
     * @return 是否更新成功
     */
    boolean updatePictureById(PictureUpdateDto updateDto);

    /**
     * 分页查询图片
     *
     * @param picturePageRequest 图片分页查询条件
     * @return 返回的图片结果集合
     */
    PageResult<PictureVo> queryPictureByPage(PicturePageRequest picturePageRequest);

    /**
     *  根据请求信息审核用户图片
     * @param reviewRequest 请求包装信息
     * @return 是否审核成功
     */
    boolean reviewByPictureId(PictureReviewRequest reviewRequest);

    /**
     * 设置审核状态，如管理员可以自动过审核
     * @param picture 图片信息
     */
    void fillReviewParams(Picture picture);

    /**
     * 查询图片分类标签
     *
     * @return 返回图片分类标签
     */
    PictureCategoryTagVo listPictureCategoryTag();
}
